<?php

/**
 * controler para movimientos de ingreso stock
 *
 * @author jreyes
 */



require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/im/mov/DP/PoRecepcionDP.class.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/im/mov/DP/PoRecepcionLineaDP.class.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/im/mov/FN/PoRecepcionFN.class.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/common/mc/FN/XxMaestroListaFN.class.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/im/alm/FN/ImAlmacenFN.class.php'); 

require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/im/mov/DP/ImStockMovimDP.class.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/im/mov/DP/ImStockDP.class.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/im/mov/FN/ImStockFN.class.php');


class StockIngresoController extends ControllerBase {
    
    public function contenedor()
    {
		
  		$o_PoRecepcionFN = new PoRecepcionFN();      
  		
  		$page = isset($this->requestVars['page']) ? $this->requestVars['page'] : 1;
  		$rp = isset($this->requestVars['rp']) ? $this->requestVars['rp'] : 10;
  		$sortname = isset($this->requestVars['sortname']) ? $this->requestVars['sortname'] : 'name';
  		$sortorder = isset($this->requestVars['sortorder']) ? $this->requestVars['sortorder'] : 'desc';
  		$o_PoRecepcionFN->page = $page;
  		$o_PoRecepcionFN->tamPag = $rp;
  		$o_PoRecepcionFN->sortCampos = $sortname;
  		$o_PoRecepcionFN->sortType   = $sortorder;

		
      if ($this->requestVars)
      {
          if ( array_key_exists('stockIngresoId', $this->requestVars) ) 
          {
              $o_PoRecepcionFN->setRcpId($this->requestVars["stockIngresoId"]);
          }
          if (array_key_exists('almId', $this->requestVars)) 
          {
              $o_PoRecepcionFN->setAlmId($this->requestVars["almId"]);
          }
          if (array_key_exists('fechaIngreso', $this->requestVars)) 
          {
              $o_PoRecepcionFN->setFechaIngreso($this->requestVars["fechaIngreso"]);
          }
          if (array_key_exists('proveedorId', $this->requestVars)) {
              $o_PoRecepcionFN->setProveedorId($this->requestVars["proveedorId"]);
          }
      }
      
      $result = $o_PoRecepcionFN->select();     
      $vars['result'] = $result;
      $vars['o_PoRecepcionFN'] = $o_PoRecepcionFN;
      if (array_key_exists('modoBusqueda', $this->requestVars)) {
          $vars['modoBusqueda'] = $this->requestVars["modoBusqueda"];
      }else{
          $vars['modoBusqueda'] = "";
      }
      $this->view->show("im/recepcion/contenedor",$vars);
		
	  }

    public function listarIngreso(){
           
        $this->view->show("im/recepcion/listar",$vars);
    } 
    
    public function nuevo(){
           
        $o_XxXxMaestroListaFN = new XxMaestroListaFN();
        
        $o_XxXxMaestroListaFN->setListaId('tipoIngres');
        $ao_TipoIngreso = $o_XxXxMaestroListaFN->select();
        
        $o_XxXxMaestroListaFN->setListaId('monedaPO');
        $ao_Moneda      = $o_XxXxMaestroListaFN->select();
        
        $o_ImAlmacenFN = new ImAlmacenFN();
        $o_ImAlmacenFN->setParaCompraSw('Y');
        $ao_ImAlmacenBN = $o_ImAlmacenFN->select();
                       
        $a_Maestros['Moneda']              = $ao_Moneda;
        $a_Maestros['listaTipoIngreso']    = $ao_TipoIngreso;        
        $a_Maestros['listaAlmacenes']      = $ao_ImAlmacenBN;        
        $vars['a_Maestros']                = $a_Maestros;
        $this->view->show("im/recepcion/nuevo",$vars);       
    }
    
    public function guardarSave()
    {
      try 
      {
        if ($this->requestVars){
              $o_PoRecepcionDP  = new PoRecepcionDP();
              $o_PoRecepcionDP->setTipo($this->requestVars["tipo"]);
              $o_PoRecepcionDP->setPoNro($this->requestVars["poNro"]);
              $o_PoRecepcionDP->setAlmId($this->requestVars["almId"]);
              $o_PoRecepcionDP->setProveedorId($this->requestVars["proveedorId"]);
              $o_PoRecepcionDP->setProveedorNombre($this->requestVars["proveedorNombre"]);
              $o_PoRecepcionDP->setContacto($this->requestVars["contacto"]);
              $o_PoRecepcionDP->setDocIngresoTipo($this->requestVars["guiaRemNro"]); /*****  OJO REVISAR   *****/
              $o_PoRecepcionDP->setDocIngresoNum($this->requestVars["guiaRemNro"]);
              $o_PoRecepcionDP->setFacturaNum($this->requestVars["facturaNro"]);
              $o_PoRecepcionDP->setMoneda($this->requestVars["moneda"]);
              $o_PoRecepcionDP->setFechaDocIngreso($this->requestVars["fechaGuiaRem"]);
              $o_PoRecepcionDP->setFechaIngreso($this->requestVars["fechaIngreso"]);
              $o_PoRecepcionDP->setFechaFactura($this->requestVars["fechaFactura"]);
              $o_PoRecepcionDP->setFlete($this->requestVars["flete"]);
              $o_PoRecepcionDP->setObs($this->requestVars["obs"]);
              
              $o_PoRecepcionDP->save();
             
              if($this->requestVars["a_ItemId"] )
              {
                  $i=1;
                  foreach ($this->requestVars["a_ItemId"] as $iKey => $value)
                  {
                    $o_PoRecepcionLineaDP = new PoRecepcionLineaDP();
                 
                    $o_PoRecepcionLineaDP->setRcpId($o_PoRecepcionDP->getRcpId());	      
                    $o_PoRecepcionLineaDP->setLineaId($i);               
                    $o_PoRecepcionLineaDP->setArtId($this->requestVars["a_ItemId"][$iKey]);                        
                    $o_PoRecepcionLineaDP->setCant($this->requestVars["a_Cant"][$iKey]);
                    $o_PoRecepcionLineaDP->setCosto($this->requestVars["a_Costo"][$iKey]);
                    $o_PoRecepcionLineaDP->setCreaFecha(date('Y-m-d'));
                    $o_PoRecepcionLineaDP->save();
                    
                    $i++;
                  }
              }
              $a_result['rcpId'] = $o_PoRecepcionDP->getRcpId();
              $a_result['rpta'] = 'true';
              $a_result['msg'] = '';
              
          }
      }catch (Exception $e)
      {
        $a_result['rpta'] = 'false';
        $a_result['msg'] = $e->getMessage().' en '.$e->getFile().' linea '.$e->getLine();        
      }
      
      echo json_encode($a_result);
    
    }
    
    public function editar(){
       if ($this->requestVars)
       {   
          if (array_key_exists('rcpId', $this->requestVars)) 
          {     
            $o_PoRecepcionFN = new PoRecepcionFN();
            $o_PoRecepcionFN->setRcpId($this->requestVars["rcpId"]);
            $o_PoRecepcionBN = $o_PoRecepcionFN->getPoRecepcion();
        
            $o_XxXxMaestroListaFN = new XxMaestroListaFN();
            
            $o_XxXxMaestroListaFN->setListaId('tipoIngres');
            $ao_TipoIngreso = $o_XxXxMaestroListaFN->select();
            
            $o_XxXxMaestroListaFN->setListaId('monedaPO');
            $ao_Moneda      = $o_XxXxMaestroListaFN->select();
            
            $o_ImAlmacenFN = new ImAlmacenFN();
            $o_ImAlmacenFN->setParaCompraSw('Y');
            $ao_ImAlmacenBN = $o_ImAlmacenFN->select();
                           
            $a_Maestros['o_PoRecepcionBN']     = $o_PoRecepcionBN;
            $a_Maestros['Moneda']              = $ao_Moneda;
            $a_Maestros['listaTipoIngreso']    = $ao_TipoIngreso;        
            $a_Maestros['listaAlmacenes']      = $ao_ImAlmacenBN;        
            $vars['a_Maestros']                = $a_Maestros;
            $this->view->show("im/recepcion/ordenIngreso",$vars); 
          }
       }      
    }
    
    public function editarSave()
    {
      try 
      {
        if ($this->requestVars){
              $o_PoRecepcionDP = new PoRecepcionDP();
              $o_PoRecepcionDP->setRcpId($this->requestVars["rcpId"]);
              $o_PoRecepcionDP->eliminarPoRecpCabeceraDetalle(); // eliminar Recepcion
                            
              $o_PoRecepcionDP->setTipo($this->requestVars["tipo"]);
              $o_PoRecepcionDP->setPoNro($this->requestVars["poNro"]);
              $o_PoRecepcionDP->setAlmId($this->requestVars["almId"]);
              $o_PoRecepcionDP->setProveedorId($this->requestVars["proveedorId"]);
              $o_PoRecepcionDP->setProveedorNombre($this->requestVars["proveedorNombre"]);
              $o_PoRecepcionDP->setContacto($this->requestVars["contacto"]);
              $o_PoRecepcionDP->setDocIngresoTipo($this->requestVars["guiaRemNro"]);   /*****  OJO REVISAR   *****/
              $o_PoRecepcionDP->setDocIngresoNum($this->requestVars["guiaRemNro"]);
              $o_PoRecepcionDP->setFacturaNum($this->requestVars["facturaNro"]);
              $o_PoRecepcionDP->setMoneda($this->requestVars["moneda"]);
              $o_PoRecepcionDP->setFechaDocIngreso($this->requestVars["fechaGuiaRem"]);
              $o_PoRecepcionDP->setFechaIngreso($this->requestVars["fechaIngreso"]);
              $o_PoRecepcionDP->setFechaFactura($this->requestVars["fechaFactura"]);
              $o_PoRecepcionDP->setFlete($this->requestVars["flete"]);
              $o_PoRecepcionDP->setObs($this->requestVars["obs"]);
              
              $o_PoRecepcionDP->update();
              if($this->requestVars["a_ItemId"] )
              {
                  $i=1;
                  foreach ($this->requestVars["a_ItemId"] as $iKey => $value)
                  {
                    $o_PoRecepcionLineaDP = new PoRecepcionLineaDP();
                 
                    $o_PoRecepcionLineaDP->setRcpId($o_PoRecepcionDP->getRcpId());	      
                    $o_PoRecepcionLineaDP->setLineaId($i);               
                    $o_PoRecepcionLineaDP->setArtId($this->requestVars["a_ItemId"][$iKey]);                        
                    $o_PoRecepcionLineaDP->setCant($this->requestVars["a_Cant"][$iKey]);
                    $o_PoRecepcionLineaDP->setCosto($this->requestVars["a_Costo"][$iKey]);
                    $o_PoRecepcionLineaDP->setCreaFecha(date('Y-m-d'));
                    $o_PoRecepcionLineaDP->save();
                    
                    $i++;
                  }
              }
              $a_result['rcpId'] = $o_PoRecepcionDP->getRcpId();
              $a_result['rpta'] = 'true';
              $a_result['msg'] = '';
              
          }
      }catch (Exception $e)
      {
        $a_result['rpta'] = 'false';
        $a_result['msg'] = $e->getMessage().' en '.$e->getFile().' linea '.$e->getLine();        
      }
      
      echo json_encode($a_result);
    
    }
    
    public function detalle(){
       if ($this->requestVars)
       {   
          if (array_key_exists('rcpId', $this->requestVars)) 
          {     
            $o_PoRecepcionFN = new PoRecepcionFN();
            $o_PoRecepcionFN->setRcpId($this->requestVars["rcpId"]);
            $o_PoRecepcionBN = $o_PoRecepcionFN->getPoRecepcion();
        
            $o_XxXxMaestroListaFN = new XxMaestroListaFN();
            
            $o_XxXxMaestroListaFN->setListaId('tipoIngres');
            $ao_TipoIngreso = $o_XxXxMaestroListaFN->select();
            
            $o_XxXxMaestroListaFN->setListaId('monedaPO');
            $ao_Moneda      = $o_XxXxMaestroListaFN->select();
            
            $o_ImAlmacenFN = new ImAlmacenFN();
            $o_ImAlmacenFN->setParaCompraSw('Y');
            $ao_ImAlmacenBN = $o_ImAlmacenFN->select();
                           
            $a_Maestros['o_PoRecepcionBN']     = $o_PoRecepcionBN;
            $a_Maestros['Moneda']              = $ao_Moneda;
            $a_Maestros['listaTipoIngreso']    = $ao_TipoIngreso;        
            $a_Maestros['listaAlmacenes']      = $ao_ImAlmacenBN;        
            $vars['a_Maestros']                = $a_Maestros;
            $this->view->show("im/recepcion/detalle",$vars); 
          }
       }      
    }    

    
    public function shwFormLinea(){
        $vars = "";
        $this->view->show("stockIngresoLinea",$vars);
    }
      

      
    
    public function cerrar(){
       if ($this->requestVars)
       {   
          if (array_key_exists('rcpId', $this->requestVars)) 
          {     
            $o_PoRecepcionFN = new PoRecepcionFN();
            $o_PoRecepcionFN->setRcpId($this->requestVars["rcpId"]);
            $o_PoRecepcionBN = $o_PoRecepcionFN->getPoRecepcion();  
          }
       }
       if ($o_PoRecepcionBN->getStatus() != 'C'){
           $a_detalleRcp = $o_PoRecepcionBN->getO_PoRecepcionLineaBN();
           foreach ($a_detalleRcp as $iKey => $value)
           { 
               $o_ImStockMovimDP  = new ImStockMovimDP();
               $o_ImStockMovimDP->setAlmId($o_PoRecepcionBN->getAlmId());
               $o_ImStockMovimDP->setArtId($value->getArtId());
               $o_ImStockMovimDP->setCant($value->getCant());
               $o_ImStockMovimDP->setCosto($value->getCosto());
               $o_ImStockMovimDP->setCreaFecha(date("Y-m-d H:i:s"));
               $o_ImStockMovimDP->setCreaUsr($value->getCreaUsr());
               $o_ImStockMovimDP->setDocId($o_PoRecepcionBN->getDocIngresoNum());
               $o_ImStockMovimDP->setDocNum($o_PoRecepcionBN->getDocIngresoNum());
               $o_ImStockMovimDP->setDocReferenNro($o_PoRecepcionBN->getFacturaNum());
               $o_ImStockMovimDP->setIngSal("I");
               $o_ImStockMovimDP->setMovFecha(date("Y-m-d"));
               $o_ImStockMovimDP->setMovTipo("C");
               $o_ImStockMovimDP->save();
               $o_ImStockFN= new ImStockFN();

               $o_ImStockDP  = new ImStockDP();
               $o_ImStockDP->setAlmId($o_PoRecepcionBN->getAlmId()) ;   
               $o_ImStockDP->setArtId($value->getArtId());
               $o_ImStockDP->setCostoUlt($value->getCosto());

               $o_ImStockFN->setAlmId($o_PoRecepcionBN->getAlmId());
               $o_ImStockFN->setArtId($value->getArtId());
               $o_ImStockBN = $o_ImStockFN->selectByPK();
               if ($o_ImStockBN){
                   $o_ImStockDP->setCantFisico($o_ImStockBN->getCantFisico() + $value->getCant());
                   $o_ImStockDP->update();
               }else{
                   $o_ImStockDP->setCantFisico($value->getCant());
                   $o_ImStockDP->save();               
               }
               $result = $o_ImStockFN->select();
           }
           $o_PoRecepcionDP = new PoRecepcionDP();
           $o_PoRecepcionDP->setRcpId($this->requestVars["rcpId"]);       
           $o_PoRecepcionDP->setStatus("C");
           $o_PoRecepcionDP->update();
           $vars['result'] = $result;
           $vars['stockFN'] = $o_ImStockFN;
           $a_result['rcpId'] = $this->requestVars["rcpId"];
           $a_result['rpta'] = 'true';
       }else{
           $a_result['rpta'] = false;           
       }
       echo json_encode($a_result);
    }
}

?>